package bintree.leetcode;

/**
 * 将二叉树转为字符串输出
 * @author yuisama
 * @date 2022/05/16 20:08
 **/
public class Num606_Tree2Str {
    /**
     * 传入一颗以root为根的二叉树就能转为相应的字符串
     * @param root
     * @return
     */
    private StringBuilder sb = new StringBuilder();
    public String tree2str(TreeNode root) {
        if (root == null) {
            return "";
        }
        // 1.先处理根节点
        sb.append(root.val);
        // 2.处理左子树
        if (root.left != null) {
            // 1(2....)
            sb.append("(");
            // 左子树的转换问题交给子函数
            tree2str(root.left);
            sb.append(")");
        }else {
            // 左子树此时为空且右子树不为空，补上一个()
            if (root.right != null) {
                sb.append("()");
            }
        }
        // 3.处理右子树
        if (root.right != null) {
            sb.append("(");
            // 右子树的内容交给子函数
            tree2str(root.right);
            sb.append(")");
        }
        return sb.toString();
    }
}